package com.cskaoyan.javase._1interface._2notice;

import jdk.internal.org.objectweb.asm.tree.MultiANewArrayInsnNode;

/**
 * Java8及其以后的接口中的默认方法以及静态方法(带实现的方法)
 *
 *
 * // 默认方法的语法:
 * default 返回值类型 方法名(形参列表){
 *     //方法体
 * }
 * 注: 默认方法可以看成是一个成员方法,必须创建对象才能调用
 * 所以接口不能直接用该方法,需要创建接口的子类对象
 * 当接口的所有实现类都需要一个默认实现时,可以考虑写默认方法(这种情况非常罕见)
 *
 * 接口中的静态方法语法
 * static 返回值类型 方法名(形参列表){
 *     //方法体
 * }
 *
 * @since 11:04
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        IBImpl ib = new IBImpl();
        ib.test();
        ib.test2();

        IB.testStatic();
        // IBImpl.testStatic();
    }
}

class IBImpl implements IB, IC {
    @Override
    public void test() {
        System.out.println("6666");
    }
}

interface IB {
    // 默认方法
    default void test() {
        System.out.println("hello world!");
    }

    // 静态方法
    static void testStatic() {
        System.out.println("static");
    }
}

interface IC {
    default void test2() {
        System.out.println("7777");
    }
}